const UserKey = 'UserKey';
const TokenKey = 'TokenKey';

// Token相关方法（sessionStorage存储，会话级）
export function getTokenLocal() {
  try {
    return sessionStorage.getItem(TokenKey) || null;
  } catch (error) {
    console.error('获取Token失败:', error);
    return null;
  }
}

export function setTokenLocal(token) {
  try {
    return sessionStorage.setItem(TokenKey, token);
  } catch (error) {
    console.error('设置Token失败:', error);
  }
}

export function removeTokenLocal() {
  try {
    return sessionStorage.removeItem(TokenKey);
  } catch (error) {
    console.error('删除Token失败:', error);
  }
}

// 用户信息相关方法（localStorage存储，持久化）
export function getUserLocal() {
  try {
    const userStr = localStorage.getItem(UserKey);
    if (!userStr || userStr.trim() === '') {
      return null;
    }
    return JSON.parse(userStr);
  } catch (error) {
    console.error('解析用户信息失败:', error);
    localStorage.removeItem(UserKey); // 清除错误数据
    return null;
  }
}

export function setUserLocal(user) {
  try {
    // 严格校验用户信息格式（核心修复点：确保存储有效对象）
    if (user && typeof user === 'object' && !Array.isArray(user)) {
      return localStorage.setItem(UserKey, JSON.stringify(user));
    }
    console.warn('存储的用户信息格式无效（必须是非数组对象）');
  } catch (error) {
    console.error('设置用户信息失败:', error);
  }
}

export function removeUserLocal() {
  try {
    return localStorage.removeItem(UserKey);
  } catch (error) {
    console.error('删除用户信息失败:', error);
  }
}